package drds.plus.parser.lexer;

//MAX, MIN, SUM, COUNT,AVG,函数归标识符里面进行判断
public enum Token {
    end_of_sql, IDENTIFIER,


    /**
     * number composed purely of digit
     */
    LITERAL_NUM_INTEGER,
    /**
     * number composed of digit mixed with <code>.</code> or <code>e</code>
     */
    LITERAL_NUM_DECIMAL,

    LITERAL_CHARS,

    LITERAL_NULL, LITERAL_BOOL_TRUE, LITERAL_BOOL_FALSE,

    /**
     * ?
     */
    QUESTION_MARK,

    /**
     * (
     */
    PUNC_LEFT_PAREN,
    /**
     * )
     */
    PUNC_RIGHT_PAREN,


    /**
     * ;
     */
    PUNC_SEMICOLON,
    /**
     * ,
     */
    PUNC_COMMA,
    /**
     * ,
     */
    PUNC_DOT,

    /**
     * <code>*</code><code>/</code>
     */
    PUNC_C_STYLE_COMMENT_END,

    // /** &#64; */
    // OP_AT,
    /**
     * =
     */
    OP_EQUALS,
    /**
     * >
     */
    OP_GREATER_THAN,
    /**
     * <
     */
    OP_LESS_THAN,
    /**
     * !
     */
    OP_EXCLAMATION,

    /**
     * +
     */
    OP_PLUS,
    /**
     * -
     */
    OP_MINUS,
    /**
     * *
     */
    OP_ASTERISK,
    /**
     * /
     */
    OP_SLASH,
    /**
     * &
     */
    OP_AMPERSAND,


    /**
     * %
     */
    OP_PERCENT,

    /**
     * <=
     */
    OP_LESS_THAN_OR_EQUALS,

    /**
     * >=
     */
    OP_GREATER_OR_EQUALS,
    /**
     * !=
     */
    OP_NOT_EQUALS,

    KW_OFFSET,//
    KW_ACCESSIBLE,//
    KW_ADD,//
    KW_ALL,//
    KW_ANY,//
    KW_ALTER,//
    KW_ANALYZE,//
    KW_AND,//
    KW_AS,//
    KW_ASC,//
    KW_ASENSITIVE,//
    KW_BEFORE,//
    KW_BETWEEN,//
    KW_BIGINT,//
    KW_BINARY,//
    KW_BLOB,//
    KW_BOTH,
    KW_BY,
    KW_CALL,
    KW_CASCADE,
    KW_CASE,
    KW_CHANGE,
    KW_CHAR,
    KW_CHARACTER,
    KW_CHECK,
    KW_COLLATE,
    KW_COLUMN,
    KW_CONDITION, KW_CONSTRAINT, KW_CONTINUE, KW_CONVERT, KW_CREATE, KW_CROSS, KW_CURRENT_DATE,
    KW_CURRENT_TIME, KW_CURRENT_TIMESTAMP, KW_CURRENT_USER, KW_CURSOR, KW_DATABASE,
    KW_DATABASES, KW_DAY_HOUR, KW_DAY_MICROSECOND,
    KW_DAY_MINUTE, KW_DAY_SECOND, KW_DEC,
    KW_DECIMAL, KW_DECLARE, KW_DEFAULT,
    KW_DELAYED, KW_DELETE,
    KW_DESC, KW_DESCRIBE,
    KW_DETERMINISTIC,
    KW_DISTINCT,
    KW_DISTINCTROW, KW_DIV, KW_DOUBLE, KW_DROP, KW_DUAL, KW_EACH, KW_ELSE,
    KW_ELSEIF, KW_ENCLOSED, KW_ESCAPED, KW_EXISTS, KW_EXIT, KW_EXPLAIN,
    KW_FETCH, KW_FLOAT, KW_FLOAT4, KW_FLOAT8, KW_FOR, KW_FORCE, KW_FOREIGN,
    KW_FROM, KW_FULLTEXT, KW_GENERAL, KW_NATURAL, KW_GRANT, KW_GROUP, KW_HAVING, KW_HIGH_PRIORITY, KW_HOUR_MICROSECOND, KW_HOUR_MINUTE, KW_HOUR_SECOND, KW_IF, KW_IGNORE, KW_IGNORE_SERVER_IDS, KW_IN, KW_INDEX, KW_INFILE, KW_INNER, KW_INOUT, KW_INSENSITIVE, KW_INSERT, KW_INT, KW_INT1, KW_INT2, KW_INT3, KW_INT4, KW_INT8, KW_INTEGER, KW_INTERVAL, KW_INTO, KW_IS, KW_ITERATE, KW_JOIN, KW_KEY, KW_KEYS, KW_KILL, KW_LEADING, KW_LEAVE, KW_LEFT, KW_LIKE, KW_LINEAR, KW_LINES, KW_LOAD, KW_LOCALTIME, KW_LOCALTIMESTAMP, KW_LOCK, KW_LONG, KW_LONGBLOB, KW_LONGTEXT, KW_LOOP, KW_LOW_PRIORITY, KW_MASTER_HEARTBEAT_PERIOD, KW_MASTER_SSL_VERIFY_SERVER_CERT, KW_MATCH, KW_MAXVALUE, KW_MEDIUMBLOB, KW_MEDIUMINT, KW_MEDIUMTEXT, KW_MIDDLEINT, KW_MINUTE_MICROSECOND, KW_MINUTE_SECOND, KW_MOD, KW_MODIFIES, KW_NOT, KW_NO_WRITE_TO_BINLOG, KW_NUMERIC, KW_ON, KW_OPTIMIZE, KW_OPTION, KW_OPTIONALLY, KW_OR, KW_ORDER, KW_OUT, KW_OUTER, KW_OUTFILE, KW_PRECISION, KW_PRIMARY, KW_PROCEDURE, KW_PURGE, KW_RANGE, KW_READ, KW_READS, KW_READ_WRITE, KW_REAL, KW_REFERENCES, KW_REGEXP, KW_RELEASE, KW_RENAME, KW_REPEAT, KW_REPLACE, KW_REQUIRE, KW_RESIGNAL, KW_RESTRICT, KW_RETURN, KW_REVOKE, KW_RIGHT, KW_RLIKE, KW_SCHEMA, KW_SCHEMAS, KW_SECOND_MICROSECOND, KW_SELECT, KW_SENSITIVE, KW_SEPARATOR, KW_SET, KW_SHOW, KW_SIGNAL, KW_SLOW, KW_SMALLINT, KW_SPATIAL, KW_SPECIFIC, KW_SQL, KW_SQLEXCEPTION, KW_SQLSTATE, KW_SQLWARNING, KW_SQL_BIG_RESULT, KW_SQL_CALC_FOUND_ROWS, KW_SQL_SMALL_RESULT, KW_SSL, KW_STARTING, KW_THEN, KW_TO, KW_TRAILING, KW_UNION, KW_UNSIGNED, KW_UPDATE, KW_USE, KW_USING, KW_UTC_DATE, KW_UTC_TIME, KW_NOW, KW_VALUES, KW_WHEN, KW_WHERE, KW_WITH, KW_YEAR_MONTH, KW_SHARE, KW_MODE;

    @Override
    public String toString() {
        return this.name();
    }
}
